package com.leet.code.simple_array;

/**
 * @description:
 * @author: WYG
 * @time: 2020/11/25 10:21
 */

public class OneBit {
    public boolean isOneBitCharacter(int[] bits) {
        if (bits.length == 1 && bits[0] == 1) return false;
        boolean flag = true;
        for (int i = 1; i < bits.length; i++) {
            if (bits[i - 1] == 0 && bits[i] == 0) { //当i-1和i同为0时,flag为ture,而且可以直接跳到下一个i,所以i++
                flag = true;
                i++;
            }
            if (bits[i - 1] == 1) { //当i-1为1时,无论下一个bit是什么都可以和它搭配,且不是以0结尾,所以flag为false,且i跳到下一个,i++
                flag = false;
                i++;
            }
            if (i == bits.length - 2 && bits[i] == 1) flag = false;//如果i跳到了倒数第二个,且其bit值为1,那么最终的结果就是false
            if (i == bits.length - 1 && bits[i] == 0 && !flag) flag = true;//如果i跳到了最后一个,且其bit值为0,上一个bit值不为1,那么最终的结果就是true
        }
        return flag;
    }
    public boolean isOneBitTwo(int[] bits) {
        int i = 0;
        while (i < bits.length - 1) {
            i += bits[i] + 1;
        }
        return i == bits.length - 1;
    }
}
